In a storage device implemented with a semiconductor memory such as a NAND type flash memory, a memory controller performs various maintenance operations on the semiconductor memory in order to prevent, for example, a data loss. As an example of the maintenance operations, a diagnosis may be performed on the stored data. The processing amount of the maintenance operations tends to increase with the increase in capacity of the semiconductor memory.